package com.devplatform.config;

import com.devplatform.pojo.vo.DataVo;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.stream.Collectors;

@RestControllerAdvice
public class ExceptionAdvice {

    // 处理参数校验异常
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public DataVo<String> handleValidException(MethodArgumentNotValidException e) {
        // 提取所有校验失败的message，用逗号拼接
        String errorMessages = e.getBindingResult().getFieldErrors().stream()
                // 获取每个字段的错误信息（即@NotBlank、@Size等注解中的message）
                .map(fieldError -> fieldError.getDefaultMessage())
                // 拼接成一个字符串（例如："用户名不能为空,密码长度不能小于6位"）
                .collect(Collectors.joining(","));

        // 封装到DataVo返回给前端（假设DataVo有状态码和消息字段）
        return DataVo.error(401, errorMessages);
    }

    @ExceptionHandler(Exception.class)
    public DataVo exception(Exception e, HttpServletRequest request) {
        e.printStackTrace();
        return DataVo.error(e.getMessage());
    }
}
